package br.com.sgh.beans;

import br.com.sgh.dao.TituloDAO;
import br.com.sgh.entidade.Titulo;
import br.com.sgh.util.FacesContextUtil;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@ViewScoped
public class TituloBean implements Serializable {

    private Titulo titulo;
    private List<Titulo> titulos;
    private String pesquisaTitulo;

    private TituloDAO<Titulo> dao() {
        TituloDAO<Titulo> dao = new TituloDAO<Titulo>(Titulo.class, FacesContextUtil.getRequestSession());
        return dao;
    }

    public String salvarTitulo() {
        if (titulo.getCodTitulo() == null || titulo.getCodTitulo() < 1) {
            dao().salvar(titulo);
            cancelar();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Gravado com sucesso!", ""));
        } else {
            dao().atualizar(titulo);
            cancelar();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Alterado com sucesso!", ""));
        }
        return "/admin/titulo.faces";
    }

    public String pesquisarTitulos() {
        titulos = dao().pesquisaTitulos(pesquisaTitulo);
        return null;
    }

    public String editar(Integer codigo) {
        titulo = dao().getEntity(codigo);
        return null;
    }

    public void cancelar() {
        titulo = new Titulo();
    }

    public Titulo getTitulo() {
        if (titulo == null) {
            titulo = new Titulo();
        }
        return titulo;
    }

    public void setTitulo(Titulo titulo) {
        this.titulo = titulo;
    }

    public List<Titulo> getTitulos() {
        if (titulos == null) {
            titulos = dao().titulos();
        }
        return titulos;
    }

    public void setTitulos(List<Titulo> titulos) {
        this.titulos = titulos;
    }

    public String getPesquisaTitulo() {
        return pesquisaTitulo;
    }

    public void setPesquisaTitulo(String pesquisaTitulo) {
        this.pesquisaTitulo = pesquisaTitulo;
    }

}
